Spark 實戰, 2/e (Spark in Action ,2/e)

Spark 實戰, 2/e (Spark in Action ,2/e)

作者: Jean-Georges Perrin 林賜 譯
出版社: 清華大學
出版在: 2022-03-01
ISBN-13: 9787302596783
ISBN-10: 7302596786
裝訂格式: 平裝
總頁數: 368 頁





內容描述


用Java編寫的Spark應用程序; Spark應用架構; 提取文件、數據庫、數據流和Elasticsearch的數據; 使用Spark SOL查詢分佈式數據集


目錄大綱


目    錄
 
 
第Ⅰ部分  通過示例講解理論
第1章  Spark介紹   3
1.1  Spark簡介及其作用   4
1.1.1  什麽是Spark   4
1.1.2  Spark神力的四個支柱   5
1.2  如何使用Spark   7
1.2.1  數據處理/工程場景中的Spark   7
1.2.2  數據科學場景中的Spark   8
1.3  使用Spark,能做些什麽   9
1.3.1  使用Spark預測NC餐飲行業的餐館質量   10
1.3.2  Spark允許Lumeris進行快速數據傳輸   10
1.3.3  Spark分析CERN的設備日誌   10
1.3.4  其他用例   11
1.4  為什麽你應該喜歡數據幀   11
1.4.1  從Java角度瞭解數據幀   11
1.4.2  從RDBMS角度理解數據幀   12
1.4.3  數據幀的圖形表示   12
1.5  第一個示例   13
1.5.1  推薦軟件   13
1.5.2  下載代碼   13
1.5.3  運行第一個應用程序   14
1.5.4  第一份代碼   15
1.6  小結   16
第2章  架構和流程   17
2.1  構建思維模型   17
2.2  使用Java代碼構建思維模型   18
2.3  運行應用程序   21
2.3.1  連接到主機   21
2.3.2  加載或提取CSV文件   22
2.3.3  轉換數據   25
2.3.4  將數據幀中完成的工作保存到數據庫中   26
2.4  小結   29
第3章  數據幀的重要作用   31
3.1  數據幀在Spark中的基本作用   32
3.1.1  數據幀的組織   32
3.1.2  不變性並非貶低之詞   33
3.2  通過示例演示數據幀的使用   35
3.2.1  簡單提取CSV後的數據幀   36
3.2.2  數據存儲在分區中   40
3.2.3  挖掘模式   41
3.2.4  提取JSON後的數據幀   43
3.2.5  合並兩個數據幀   48
3.3  數據幀Dataset   53
3.3.1  重用POJO   53
3.3.2  創建字符串數據集   54
3.3.3  來回轉換   55
3.4  數據幀的祖先:RDD   60
3.5  小結   61
第4章  Spark的“惰性”本質   63
4.1  現實中懶惰但高效的示例   64
4.2  懶惰但高效的Spark示例   65
4.2.1  查看數據轉換和數據操作的結果   65
4.2.2  數據轉換的過程,逐步進行   66
4.2.3  數據轉換/操作流程的後台代碼   68
4.2.4  在182毫秒內創建700多萬個數據點的奧秘   71
4.2.5  操作計時背後的奧秘   72
4.3  與RDBMS和傳統應用程序進行比較   76
4.3.1  使用青少年生育率數據集   76
4.3.2  分析傳統應用程序和Spark應用程序之間的區別   77
4.4  對於以數據為中心的應用程序而言,Spark的表現出乎意料   78
4.5  Catalyst是應用程序的催化器   79
4.6  小結   81
第5章  構建一個用於部署的簡單應用程序   83
5.1  無數據提取的示例   83
5.1.1  計算π   84
5.1.2  計算近似值π的代碼   85
5.1.3  Java中的lambda函數是什麽   90
5.1.4  使用lambda函數估算π   92
5.2  與Spark交互   93
5.2.1  本地模式   94
5.2.2  集群模式   95
5.2.3  Scala和Python的交互模式   97
5.3  小結   102
第6章  部署簡單的應用程序   105
6.1  示例之外:組件的作用   106
6.1.1  快速瀏覽組件及其之間的交互   107
6.1.2  Spark架構的故障排除技巧   110
6.1.3  知識拓展   110
6.2  構建集群   111
6.2.1  如何構建集群   111
6.2.2  設置環境   112
6.3  構建應用程序,在集群上運行   115
6.3.1  構建應用程序的超級JAR   115
6.3.2  使用Git和Maven構建應用程序   117
6.4  在集群上運行應用程序   119
6.4.1  提交超級JAR   119
6.4.2  運行應用程序   120
6.4.3  分析Spark的用戶界面   121
6.5  小結   122
第Ⅱ部分  數據提取
第7章  從文件中提取數據   125
7.1  解析器的常見行為   126
7.2  從CSV中提取數據(比較復雜)   126
7.2.1  預期輸出   128
7.2.2  代碼   128
7.3  使用已知模式提取CSV   129
7.3.1  預期輸出   130
7.3.2  代碼   130
7.4  提取JSON文件   132
7.4.1  預期輸出   134
7.4.2  代碼   134
7.5  提取多行JSON文件   135
7.5.1  預期輸出   137
7.5.2  代碼   137
7.6  提取XML文件   138
7.6.1  預期輸出   140
7.6.2  代碼   140
7.7  提取文本文件   142
7.7.1  預期輸出   143
7.7.2  代碼   143
7.8  用於大數據的文件格式   144
7.8.1  傳統文件格式的問題   144
7.8.2  Avro是基於模式的序列化格式   145
7.8.3  ORC是一種列式存儲格式   145
7.8.4  Parquet也是一種列式存儲格式   146
7.8.5  比較Avro、ORC和Parquet   146
7.9  提取Avro、ORC和Parquet文件   146
7.9.1  提取Avro   146
7.9.2  提取ORC   148
7.9.3  提取Parquet   150
7.9.4  用於提取Avro、ORC或Parquet的參考表格   151
7.10  小結   151
第8章  從數據庫中提取數據   153
8.1  從關系數據庫中提取數據   154
8.1.1  數據庫連接備忘錄   154
8.1.2  瞭解示例中使用的數據   155
8.1.3  預期輸出   156
8.1.4  代碼   157
8.1.5  可替代的代碼   159
8.2  dialect的作用   160
8.2.1  什麽是dialect   160
8.2.2  Spark提供的JDBC dialect   161
8.2.3  構建自定義dialect   161
8.3  高級查詢和提取   163
8.3.1  使用WHERE子句進行過濾   163
8.3.2  在數據庫中連接數據   166
8.3.3  執行數據提取和分區   168
8.3.4  高級功能總結   171
8.4  從Elasticsearch中提取數據   171
8.4.1  數據流   171
8.4.2  Spark提取的NYC餐館數據集   172
8.4.3  從 Elasticsearch中提取NYC餐館數據集的代碼   173
8.5  小結   175
第9章  數據提取進階:尋找數據源與構建自定義數據源   177
9.1  什麽是數據源   179
9.2  直接連接數據源的好處   179
9.2.1  臨時文件   180
9.2.2  數據質量腳本   181
9.2.3  按需提供數據   181
9.3  查找Spark軟件包中的數據源   181
9.4  構建自己的數據源   181
9.4.1  示例項目的範圍   182
9.4.2  數據源API和選項   183
9.5  幕後工作:構建數據源本身   185
9.6  使用註冊器文件和廣告器類   186
9.7  理解數據和模式之間的關系   188
9.7.1  數據源構建關系   189
9.7.2  關系內部   191
9.8  使用JavaBean構建模式   194
9.9  使用實用程序構建數據幀的神奇方法   196
9.10  其他類   201
9.11  小結   201
第10章  提取結構化流數據   203
10.1  什麽是流數據   204
10.2  創建首個流數據   205
10.2.1  生成文件流數據   206
10.2.2  消費記錄   208
10.2.3  獲取記錄,而非數據行   213
10.3  從網絡流數據中提取數據   214
10.4  處理多個流數據   216
10.5  區分離散化流數據和結構化流數據   221
10.6  小結   221
第III部分  轉換數據
第11章  使用SQL   225
11.1  使用Spark SQL   225
11.2  本地視圖與全局視圖之間的區別   229
11.3  混合使用數據幀API和Spark SQL   230
11.4  不要刪除數據   233
11.5  進一步瞭解SQL   235
11.6  小結   235
第12章  轉換數據   237
12.1  數據轉換是什麽   238
12.2  在記錄層面進行數據轉換的過程和示例   238
12.2.1  數據發現,瞭解數據的復雜性   240
12.2.2  數據映射,繪制過程   241
12.2.3  編寫轉換代碼   244
12.2.4  審查數據轉換,確保質量流程   249
12.2.5  如何排序   251
12.2.6  結束Spark數據轉換的首次演示   251
12.3  連接數據集   251
12.3.1  仔細查看要連接的數據集   252
12.3.2  構建各縣的高等教育機構列表   253
12.3.3  執行連接操作   258
12.4  執行更多的數據轉換   263
12.5  小結   263
第13章  轉換整個文檔   265
13.1  轉換整個文檔及其結構   265
13.1.1  展平JSON文檔   266
13.1.2  構建嵌套文檔,用於數據傳輸和存儲   270
13.2  靜態函數背後的魔力   274
13.3  執行更多的數據轉換   275
13.4  小結   275
第14章  使用自定義函數擴展數據轉換   277
14.1  擴展Apache Spark   278
14.2  註冊和調用UDF   279
14.2.1  在Spark中註冊UDF   281
14.2.2  將UDF與數據幀API結合起來使用   282
14.2.3  使用SQL處理UDF   283
14.2.4  實現UDF   284
14.2.5  編寫服務代碼   285
14.3  使用UDF,確保數據高質量   287
14.4  考慮UDF的約束   289
14.5  小結   289
第15章  聚合數據   291
15.1  使用Spark聚合數據   291
15.1.1  簡單回顧數據聚合   292
15.1.2  使用Spark執行基本的數據聚合   294
15.2  使用實時數據執行數據聚合   296
15.2.1  準備數據集   297
15.2.2  聚合數據,更好地瞭解學校   301
15.3  使用UDAF構建自定義的聚合操作   306
15.4  小結   311
第IV部分  百尺竿頭,更進一步
第16章  緩存和檢查點:增強Spark的性能   315
16.1  使用緩存和檢查點可提高性能   315
16.1.1  Spark緩存的用途   317
16.1.2  Spark檢查點的妙用   318
16.1.3  使用緩存和檢查點   318
16.2  緩存實戰   326
16.3  有關性能優化的知識拓展   335
16.4  小結   335
第17章  導出數據,構建完整數據管道   337
17.1  導出數據的主要概念   337
17.1.1  使用NASA數據集構建管道   338
17.1.2  將列轉換為日期時間(datetime)   341
17.1.3  將置信度百分比轉換為置信度等級   341
17.1.4  導出數據   342
17.1.5  導出數據:實際發生了什麽   344
17.2  Delta Lake:使用系統核心的數據庫   346
17.2.1  理解需要數據庫的原因   346
17.2.2  在數據管道中使用Delta Lake   347
17.2.3  消費來自Delta Lake的數據   351
17.3  從Spark訪問雲存儲服務   353
17.4  小結   354
第18章  探索部署約束:瞭解生態系統   355
18.1  使用YARN、Mesos和Kubernetes管理資源   356
18.1.1  使用內置的獨立模式管理資源   356
18.1.2  在Hadoop環境中,使用YARN管理資源   357
18.1.3  Mesos是獨立的資源管理器   358
18.1.4  Kubernetes編排容器   360
18.1.5  選擇合適的資源管理器   360
18.2  與Spark共享文件   361
18.2.1  訪問文件中包含的數據   362
18.2.2  通過分佈式文件系統共享文件   362
18.2.3  訪問共享驅動器或文件服務器上的文件   363
18.2.4  使用文件共享服務分發文件   364
18.2.5  訪問Spark文件的其他選項   365
18.2.6  用於與Spark共享文件的混合解決方案   365
18.3  確保Spark應用程序的安全   365
18.3.1  保護基礎架構的網絡組件   366
18.3.2  保護Spark磁盤的使用   367
18.4  小結   367
 
附錄部分內容通過封底二維碼下載獲取
附錄A  安裝Eclipse   369
附錄B  安裝Maven   375
附錄C  安裝Git   379
附錄D  下載代碼,啟用Eclipse   381
附錄E  企業數據的歷史   387
附錄F  有關關系數據庫的幫助信息   391
附錄G  靜態函數使數據轉換變得容易   397
附錄H  簡略的Maven備忘單   407
附錄I  數據轉換和數據操作的
參考資料   411
附錄J  Scala簡介   421
附錄K  在生產環境中安裝Spark,以及一些提示   423
附錄L 關於數據提取的參考資料   435
附錄M  關於連接的參考資料   447
附錄N  安裝Elasticsearch和示例數據   459
附錄O 生成流數據   465
附錄P  有關流數據的參考資料   469
附錄Q  有關導出數據的參考資料   479
附錄R  遇到困難,尋找幫助   487




相關書籍

Java多線程與大數據處理實戰

作者 李建平

2022-03-01

Big Data, Little Data, No Data: Scholarship in the Networked World (MIT Press)

作者 Christine L. Borgman

2022-03-01

從物聯到萬聯 : Node.js 與樹莓派萬維物聯網構建實戰

作者 多米尼加聯邦·D·吉納德 (Dominique D.Guinard) 弗拉德·M·特裡法 (Vlad M.Trifa)

2022-03-01